]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
screenShield: Tie `LockedHint` to locked state
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 7 Jan 2021 21:33:47 +0000 (22:33 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 7 Jan 2021 21:43:42 +0000 (22:43 +0100)
Currently the hint reflects the `active` state, which effectively
corresponds to the screen blank. That's a bit surprising considering
the name, plus the `active` state is already exposed by the ScreenSaver
D-Bus interface for anyone interested.

It seems reasonable that the `LockedHint` property reflects the lock
state, so change the handling to do exactly that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/351

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1561>

js/ui/screenShield.js

index fa3a7a81677779cdfb5263e641edff81b75f5e78..9a64fc32c3206783da6c4baf4e8843853ca2fda9 100644 (file)
@@ -151,12 +151,20 @@ var ScreenShield = class {
         if (prevIsActive != this._isActive)
             this.emit('active-changed');
 
-        if (this._loginSession)
-            this._loginSession.SetLockedHintRemote(active);
-
         this._syncInhibitor();
     }
 
+    _setLocked(locked) {
+        let prevIsLocked = this._isLocked;
+        this._isLocked = locked;
+
+        if (prevIsLocked !== this._isLocked)
+            this.emit('locked-changed');
+
+        if (this._loginSession)
+            this._loginSession.SetLockedHintRemote(locked);
+    }
+
     _activateDialog() {
         if (this._isLocked) {
             this._ensureUnlockDialog(true /* allowCancel */);
@@ -563,8 +571,7 @@ var ScreenShield = class {
 
         this._activationTime = 0;
         this._setActive(false);
-        this._isLocked = false;
-        this.emit('locked-changed');
+        this._setLocked(false);
         global.set_runtime_state(LOCKED_STATE_STR, null);
     }
 
@@ -624,14 +631,12 @@ var ScreenShield = class {
         let userManager = AccountsService.UserManager.get_default();
         let user = userManager.get_user(GLib.get_user_name());
 
-        if (this._isGreeter)
-            this._isLocked = true;
-        else
-            this._isLocked = user.password_mode != AccountsService.UserPasswordMode.NONE;
-
         this.activate(animate);
 
-        this.emit('locked-changed');
+        const lock = this._isGreeter
+            ? true
+            : user.password_mode !== AccountsService.UserPasswordMode.NONE;
+        this._setLocked(lock);
     }
 
     // If the previous shell crashed, and gnome-session restarted us, then re-lock